iT邦幫忙

2022 iThome 鐵人賽

DAY 22
0
AI & Data

Object Detection and Image Processing with Python系列 第 22

《第22天》YOLOR本地端訓練(Windows)

  • 分享至 

  • xImage
  •  

環境安裝

  1. 開啟Pycharm新專案:

    1.1 點擊New Project開啟新專案

    1.2 點擊New enviroment using,選擇Vitualenv後輸入專案名稱,再點擊Create。

  2. 到Github下載WongKinYiu/yolor

  3. 解壓縮後將yolor-main資料夾移動到Pycharm專案資料夾內,並更名為YOLOR。

  4. 在Pycharm內點選Terminal,並依序輸入以下指令

    4.1 進入YOLOR資料夾:cd .\YOLOR\

    4.2 修正requirements.txt

    • 修正前

    • 修正後

    4.3 安裝需求套件:pip install -r requirements.txt

    4.4 安裝CUDA與Torch

    • 我是使用RTX2060s,測試可行的版本如下。pip install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio===0.10.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html


模型推論(detect.py檔)

  1. 預訓練模型yolor_p6權重

    1.1 下載預訓練模型yolor_p6權重

    1.2 放到YOLOR資料夾,用以執行detect.py測試是否部署環境成功。

  2. inference/images資料夾內的horses照片複製成8張,可測試單張及多張照片的GPU推論速度。

  3. 在Terminal輸入推論指令

    3.1 單張照片gpu推論:python detect.py --source inference/images/ --cfg cfg/yolor_p6.cfg --weights yolor_p6.pt --conf 0.25 --img-size 1280 --device 0

    • 執行結果:載入模型+1張圖片推論,花費了0.055秒。

    • 推論結果

    3.2 多張照片gpu推論:python detect.py --source inference/images/ --cfg cfg/yolor_p6.cfg --weights yolor_p6.pt --conf 0.25 --img-size 1280 --device 0

    • 執行結果

      • 載入模型+第1張圖片推論,花費0.054秒
      • 第2~8張圖片,1張圖片推論平均時間為0.0311秒。

    • 推論結果

    3.3 參數說明

    • --cfg 後面放參數設定的檔案路徑,如:cfg/yolor_p6.cfg
    • --weights 後面放推論時讀取的weight檔案路徑,如:yolor_p6.pt
    • --source 後面放要推論的圖片或資料夾路徑,如:inference/images/
    • --conf 後面放confidence的閾值,如:0.25
    • --iou-thres後面放NMS的閾值,如:默認0.5
    • --img-size 待推論圖片輸入模型的尺寸,如:1280
    • --save_result 是否儲存圖片推論結果,如:True
    • --device 指定推論GPU的編號,如:0

模型訓練(train.py檔)

  1. YOLO txt格式

    1.1 資料集下載

    • 下載datasets1:從coco128中擷取部分資料。

    • 將datasets1資料集解壓縮,並移到YOLOR下的data資料夾內。

    • 資料集結構如下圖。

    1.2 下載預訓練模型yolor_p6權重,並放到YOLOR資料夾內。

    1.3 修改coco.yaml參數檔檔

    • train與val資料夾路徑。(編號1)
    • nc:dataset1中共有80個類別。(編號2)
    • names:字串格式輸入類別名稱。(編號3)

    1.4 修改coco.names

    • 模型訓練完成後,會讀取val資料集與coco.name進行驗證,並計算mAP。
    • dataset1中共有80個類別,換行輸入所有類別。

    1.5 修改cfg/yolor_p6.cfg

    • classes:dataset1有80個類別,故第1614、1658、1702、1746行需為80。

    • filters:dataset1有80個類別,filters=(類別數量+5)*3。

      • 第1569、1573、1577、1581行需為255。

      • 第1605、1649、1693、1737行需為255。

    1.6 修正plots.py檔:./YOLOR/utils/plots.py

    • 若未修正plots.py檔內容,模型訓練到最後一回合時,可能跳出下列錯誤。

    • 修正方式參考原作者committed on 19 Jul 2021

      • 修改前

      • 修改後

    1.7 執行訓練:python train.py --batch-size 2 --img 1280 1280 --data coco.yaml --cfg cfg/yolor_p6.cfg --weights yolor_p6.pt --device 0 --name yolor_p6 --hyp hyp.scratch.1280.yam l --epochs 10

    • 訓練過程

    • 訓練結果

    1.8 Demo測試:python detect.py --source inference/images/ --cfg cfg/yolor_p6.cfg --weights runs/train/yolor_p6/weights/best.pt --conf 0.25 --img-size 1280 --device 0

    • 推論過程

    • 推論結果


小結

下一站,我們前往「YOLOX本地端訓練(Windows)」,分享如何設置YOLOX環境,並進行訓練與推論。

讓我們繼續看下去...


參考資料

  1. WongKinYiu/yolor
  2. 【已解决TypeError: can‘t convert cuda:0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor
  3. Kaggle coco128

上一篇
《第21天》Scaled YOLOv4本地端訓練(Windows)
下一篇
《第23天》YOLOX本地端訓練(Windows)
系列文
Object Detection and Image Processing with Python30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
cyuanfan
iT邦新手 5 級 ‧ 2023-08-25 17:28:16

您好,想請問您是否還有保留yolor_p6權重的檔案?
因為權重的下載連結已經失效了,原作者github的下載連結也同樣失效了。

cyuanfan iT邦新手 5 級 ‧ 2023-09-12 17:40:25 檢舉

非常感謝。

我要留言

立即登入留言